﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
using SOAPServices.Persistencia;
using SOAPServices.Dominio;

namespace SOAPServices
{
    public class Clientes : IClientes
    {

        private ClienteDAO clienteDAO = null;
        private ClienteDAO ClienteDAO
        {
            get
            {
                if (clienteDAO == null)
                    clienteDAO = new ClienteDAO();
                return clienteDAO;
            }


        }
        private OcupacionDAO ocupacionDAO = null;
        private OcupacionDAO OcupacionDAO
        {
            get
            {
                if (ocupacionDAO == null)
                    ocupacionDAO = new OcupacionDAO();
                return ocupacionDAO;
            }

        }

        #region IClientes Members

        public Cliente CrearCliente(string nombres, string apellidos, string correo, int ocupacion, string pass, string rpass, string telefono, string direccion, string dni, string fecha_nac)
        {
            Ocupacion ocupacionExistente = OcupacionDAO.Obtener(ocupacion);
            Cliente clienteACrear = new Cliente()
            {

                Nombres = nombres,
                Apellidos = apellidos,
                Correo = correo,
                Ocupacion = ocupacionExistente,
                Pass = pass,
                Rpass = rpass,
                Telefono = telefono,
                Direccion = direccion,
                Dni = dni,
                Fecha_nac = fecha_nac
            };
            return ClienteDAO.Crear(clienteACrear);
        }

        public Cliente ObtenerCliente(string correo)
        {
            return ClienteDAO.Obtener(correo);
        }

        public Cliente ModificarCliente(string correo, string nombres, string apellidos, int ocupacion, string pass, string rpass, string telefono, string direccion, string dni, string fecha_nac)
        {
            Ocupacion ocupacionExistente = OcupacionDAO.Obtener(ocupacion);
            Cliente clienteAModificar = new Cliente()
            {
                Correo = correo,
                Nombres = nombres,
                Apellidos = apellidos,
                Ocupacion = ocupacionExistente,
                Pass = pass,
                Rpass = rpass,
                Telefono = telefono,
                Direccion = direccion,
                Dni = dni,
                Fecha_nac = fecha_nac
            };
            return ClienteDAO.Modificar(clienteAModificar);
        }

        public void EliminarCliente(string correo)
        {
            Cliente clienteExistente = ClienteDAO.Obtener(correo);
            ClienteDAO.Eliminar(clienteExistente);
        }

        public List<Cliente> ListarClientes()
        {
            return ClienteDAO.ListarTodos().ToList();
        }
        public List<Ocupacion> ListarOcupacion()
        {
            return OcupacionDAO.ListarTodos().ToList();
        }
        #endregion
    }
}